package org.onionframework.persistence.model.logic;

import org.onionframework.persistence.model.support.ExtendComponent;

/**
 * 可扩展组件接口
 */
public interface Extendable {

	/**
	 * 在实现类中，这个方法上需要加入以下三个Annotation
	 * 	@Transient 为了兼容老代码，让本属性作为一个非持久化属性
	 * 	@Embedded 表明这是一个组件映射
	 * 	@ExtendPoint("com.ai.auth.model.User.ex") 定义扩展点，名称随意，建议是属性路径
	 */
	public ExtendComponent getEx();
	

	public void setEx(ExtendComponent ex);
	
	/**
	 * 获取扩展属性并转换为相应的类型
	 */
	public <T extends ExtendComponent> T getEx(Class<T> clazz);
	
}
